Node.js Managing Dependencies

अपने Node.js प्रोजेक्ट की निर्भरताओं को प्रभावी ढंग से प्रबंधित करना सीखें

निर्भरता प्रबंधन क्या है?

निर्भरता प्रबंधन उन बाहरी पैकेजों को ट्रैक करने, इंस्टॉल करने, अपडेट करने और हटाने की प्रक्रिया है जिन पर आपका एप्लिकेशन निर्भर करता है।

यह आपके एप्लिकेशन को समय के साथ स्थिर, सुरक्षित और रखरखाव योग्य बनाने में मदद करता है।

npm (Node Package Manager)

Node.js

Yarn

पैकेज मैनेजर बदलें

pnpm

एक और लोकप्रिय बदलाव

🔑 Node.js :

  • निर्भरता घोषित करने के लिए package.json फ़ाइल
  • आश्रित संस्करण के लिए फ़ाइलें लॉक करें (पैकेज-लॉक.जेसन या यार्न.लॉक)
  • पैकेज प्रबंधक पैकेजों को स्थापित करने, अद्यतन करने और हटाने का आदेश देता है
  • कमजोरियों की पहचान करने और उन्हें ठीक करने के लिए सुरक्षा उपकरण

सिमेंटिक संस्करण प्रबंधन को समझना

Node.js (SemVer) , - : ..

महत्वपूर्ण

परिवर्तन के लिए असंगत एपीआई को आगे बढ़ाया गया है

छोटा

नई सुविधाओं के लिए पश्चगामी अनुकूलता को बढ़ाया गया है

पैबंद

बग फिक्स के लिए बैकवर्ड अनुकूलता को बढ़ाया गया है

प्रतीक उदाहरण अर्थ
^ ^2.8.1 2.x.x के साथ कोई भी महत्वपूर्ण संस्करण केवल संगत होना चाहिए (2.8.1 या उच्चतर)
~ ~2.8.1 कोई भी, important.short केवल 2.8.x (2.8.1 या उच्चतर) से मेल खाना चाहिए
* * कोई भी संस्करण (उत्पादन के लिए अनुशंसित नहीं)
>= >=2.8.1 संस्करण 2.8.1 या कोई उच्चतर संस्करण
कुछ नहीं 2.8.1 केवल सही संस्करण

उदाहरण: विभिन्न संस्करण विनिर्देश नोट्स

{
  "dependencies": {
    "express": "^2.8.1", // Any 2.x.x version (2.8.1 or higher)
    "lodash": "~2.8.1", // Any 2.8.x version (2.8.1 or higher)
    "moment": "2.8.1", // Exactly version 2.8.1
    "axios": ">=2.8.1", // Version 2.8.1 or any higher version
    "debug": "2.x" // Any version starting with 2
  }
}

निर्भरता स्थापित करें

Node.js प्रोजेक्ट में निर्भरताएँ स्थापित करने के कई तरीके हैं:

सभी निर्भरताएँ स्थापित करें

npm install

यह कमांड package.json फ़ाइल को चरणबद्ध करता है और वहां सूचीबद्ध सभी निर्भरताएँ स्थापित करता है।

निर्दिष्ट पैकेज की स्थापना

npm install express

यह पैकेज में नवीनतम संस्करण स्थापित करता है और इसे आपके package.json में निर्भरता में जोड़ता है।

विशिष्ट संस्करण स्थापित करें

npm install express@4.17.1

package.json

npm install express --no-save

विश्व स्तर पर स्थापना

npm install -g nodemon

वैश्विक पैकेज सिस्टम-व्यापी स्थापित किए जाते हैं, प्रोजेक्ट की नोड_मॉड्यूल निर्देशिका में नहीं।

निर्भरता के प्रकार

Node.js , :

सामान्य पूर्वाग्रह

npm install express --save
# or simply
npm install express

ये आपके एप्लिकेशन को उत्पादन में चलाने के लिए आवश्यक पैकेज हैं।

निर्भरताएँ बनाएँ

npm install jest --save-dev
# or
npm install jest -D

ये पैकेज, परीक्षण संरचनाएं या निर्माण उपकरण हैं जो केवल स्थानीय विकास और परीक्षण के लिए आवश्यक हैं।

सहकर्मी निर्भरता

{
  "name": "my-plugin",
  "version": "1.0.0",
  "peerDependencies": {
    "react": "^17.0.0"
  }
}

वास्तव में उन्हें शामिल किए बिना, अन्य पैकेजों के साथ संगतता इंगित करने के लिए package.json में निर्दिष्ट किया गया है।

वैकल्पिक निर्भरताएँ

npm install fancy-feature --save-optional
# or
npm install fancy-feature -O

ये पैकेज कार्यक्षमता में सुधार करते हैं, लेकिन महत्वपूर्ण एप्लिकेशन चलाने के लिए इनकी आवश्यकता नहीं होती है।

💡सहायता नोट:

उत्पादन में आवश्यक पैकेजों के लिए निर्भरता का उपयोग करें और केवल विकास या परीक्षण के लिए आवश्यक पैकेजों के लिए डेव निर्भरता का उपयोग करें।

पैकेज लॉक फ़ाइलें

लॉक फ़ाइलें प्रत्येक पैकेज के लिए सही संस्करण और उसकी निर्भरता को रिकॉर्ड करके विभिन्न वातावरणों में लगातार इंस्टॉलेशन सुनिश्चित करती हैं।

package-lock.json (npm)

जब npm node_modules ट्री या package.json को संशोधित करता है तो यह फ़ाइल स्वचालित रूप से बनाई जाती है।

{
  "name": "my-app",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "node_modules/express": {
      "version": "4.18.2",
      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
      "dependencies": {
        "accepts": "~1.3.8",
        "array-flatten": "1.1.1"
      }
    }
  }
}

yarn.lock (Yarn)

यार्न की लॉक फ़ाइल एक समान उद्देश्य को पूरा करती है लेकिन इसका प्रारूप अलग है।

⚠️महत्वपूर्ण:

अपनी टीम और विस्तार परिवेश में लगातार इंस्टॉलेशन सुनिश्चित करने के लिए अपनी लॉक फ़ाइलों को हमेशा संस्करण नियंत्रण के लिए समर्पित करें।

निर्भरताएँ अद्यतन कर रहा है

समाप्त हो चुके पैकेजों की जाँच करें

npm outdated

निर्दिष्ट पैकेज को अद्यतन करें

npm update express

सभी पैकेज अपडेट करें

npm update

एनपीएम अपडेट किया जा रहा है

npm install -g npm@latest

एनपीएम-चेक-अपडेट का उपयोग करना

अपडेट पर अधिक नियंत्रण के लिए, आप npm-check-updates पैकेज का उपयोग कर सकते हैं:

# Install npm-check-updates globally
npm install -g npm-check-updates

# Check for updates
ncu

# Update package.json
ncu -u

# Install updated packages
npm install

सुरक्षा और लेखापरीक्षा

अपने पूर्वाग्रहों का ऑडिट करें

npm audit

सुरक्षा कमजोरियाँ ठीक करें

npm audit fix

सभी समस्याओं को ठीक करें (सावधानीपूर्वक उपयोग करें)

npm audit fix --force

ज्ञात कमजोरियों की जाँच करें

npm audit

# Or using npx with the 'audit' package
npx audit

सर्वोत्तम अभ्यास

उत्पादन में सही संस्करणों का उपयोग करें: अप्रत्याशित अद्यतनों को रोकने के लिए बाद में अपनी निर्भरताओं को सही संस्करणों में तैनात करें
निर्भरताएँ नियमित रूप से अपडेट करें: सुरक्षा पैच और नई सुविधाओं का लाभ उठाने के लिए अपनी निर्भरताएँ अद्यतन रखें
अपनी निर्भरताओं का ऑडिट करें: ज्ञात कमजोरियों के लिए नियमित रूप से अपनी निर्भरताओं का ऑडिट करें
लॉक फ़ाइल का उपयोग करें: अपनी लॉक फ़ाइल को हमेशा संस्करण नियंत्रण के लिए समर्पित करें
निर्भरता कम करें: केवल वही पैकेज जोड़ें जिनकी आपको वास्तव में आवश्यकता है
स्कोप्ड पैकेज का उपयोग करें: आंतरिक पैकेजों के लिए, नाम के टकराव से बचने के लिए स्कोप का उपयोग करें
अपनी निर्भरताओं का दस्तावेज़ीकरण करें: अपने प्रोजेक्ट दस्तावेज़ीकरण में इस बारे में जानकारी जोड़ें कि प्रत्येक निर्भरता की आवश्यकता क्यों है

सामान्य समस्याओं का समाधान

एनपीएम कैश साफ़ करना

npm cache clean --force

नोड_मॉड्यूल को हटाना और पुनः स्थापित करना

rm -rf node_modules
rm package-lock.json
npm install

पीयर-टू-पीयर समस्याओं की जाँच करता है

npm ls

टूटी हुई निर्भरता को ठीक करना

npm rebuild

सारांश

एक स्वस्थ Node.js प्रोजेक्ट को बनाए रखने के लिए प्रभावी निर्भरता प्रबंधन महत्वपूर्ण है।

सुरक्षा

सामान्य ऑडिट और अपडेट

स्थिरता

उचित संस्करण नियंत्रण और फ़ाइलें लॉक करें

रखरखाव

पैकेज प्रकार और सर्वोत्तम प्रथाएँ

अद्यतन

स्वचालित अद्यतन उपकरण

💎महत्वपूर्ण बिंदु:

  • एक स्वस्थ Node.js प्रोजेक्ट के लिए निर्भरता प्रबंधन महत्वपूर्ण है
  • सिमेंटिक संस्करण प्रबंधन को समझें
  • विभिन्न प्रकार की निर्भरताओं का उपयोग करें
  • लॉक फ़ाइलों को हमेशा संस्करण नियंत्रण में रखें
  • सुरक्षा कमजोरियों के लिए अपनी निर्भरताओं का नियमित रूप से ऑडिट करें

अभ्यास

सही फ़ील्ड नाम चुनें.

package.json में निर्भरताएँ बनाएँ______नीचे सूचीबद्ध हैं.

dependencies
✗ ग़लत! "निर्भरताएं" का तात्पर्य उत्पादन निर्भरता से है, न कि निर्माण निर्भरता से
devDependencies
✓ ठीक है! "डेवडिपेंडेंसीज़" उन पैकेजों के लिए हैं जो केवल विकास और परीक्षण के लिए आवश्यक हैं
development
✗ ग़लत! package.json में "विकास" एक स्थिर फ़ील्ड नहीं है
dev
✗ ग़लत! package.json में "dev" एक स्थिर फ़ील्ड नहीं है